import datetime
import os


class FileGeneratorDemo:
    def __init__(self, base_dir="D:\\test", template=None):
        """
        初始化文件生成器

        :param base_dir: 文件保存的根目录
        :param template: 文件内容模板，支持 {key} 格式的占位符
        """
        self.base_dir = base_dir
        self.template = template or """文件名: {file_name}
创建时间: {create_time}
作者: {author}
内容摘要:
{content}
--------
详细信息:
设备编号: {device_id}
位置: {location}
备注: {remark}
"""
        # 确保目录存在
        if not os.path.exists(self.base_dir):
            os.makedirs(self.base_dir)

    def generate_files(self, data_list):
        """
        批量生成文件

        :param data_list: 字典列表，每个字典包含 file_name 和其他用于模板的字段
        """
        file_name = ""
        for data in data_list:
            if 'file_name' not in data:
                print("警告：缺少 file_name 字段，跳过该条目")
                continue
            date_string = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
            file_name = date_string + "-" + data['file_name']
            file_path = os.path.join(self.base_dir, file_name)

            try:
                # 使用字典展开填充模板
                content = self.template.format(**data)
                with open(file_path, 'w', encoding='utf-8') as f:
                    f.write(content)
                print(f"✅ 已生成文件: {file_path}")
            except KeyError as e:
                print(f"❌ 模板中使用的变量 {e} 在数据中不存在，文件 {data['file_name']} 生成失败。")
            except Exception as e:
                print(f"❌ 写入文件失败 {file_path}: {e}")


# 示例使用
if __name__ == "__main__":
    # 模拟数据
    data_list = [
        {
            "file_name": "report_001.txt",
            "create_time": "2024-05-01 10:00",
            "author": "张三",
            "content": "这是第一个报告的内容摘要。",
            "device_id": "DEV001",
            "location": "北京机房A区",
            "remark": "系统正常运行"
        },
        {
            "file_name": "report_002.txt",
            "create_time": "2024-05-02 11:30",
            "author": "李四",
            "content": "第二个报告，记录维护操作。",
            "device_id": "DEV005",
            "location": "上海数据中心",
            "remark": "已完成升级"
        },
        {
            "file_name": "note_temp.txt",
            "create_time": "2024-05-03 09:15",
            "author": "王五",
            "content": "临时笔记",
            "device_id": "TMP999",
            "location": "测试环境",
            "remark": "仅供测试"
        }
    ]

    # 创建生成器并执行
    generator = FileGeneratorDemo()
    generator.generate_files(data_list)
